package com.gxc.string;

import java.lang.*;
import java.lang.Integer;
import java.util.Map;

/**
 * 一个合法的括号匹配序列有以下定义
 * 1)空串""是一个合法的括号匹配序列
 * 2)如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序列
 * 3)如果"X"是一个合法的括号匹配序列,那么”(X)”也是一个合法的括号匹配序列
 * 4)每个合法的括号序列都可以由以上规则生成。例如:"","()","((()))"都是合法的括号序列
 * 对于一个合法的括号序列我们又有以下定义它的深度:
 * 1)空串""的深度是0
 * 2)如果字符串"X"的深度是x,字符串"Y"的深度是y,那么字符串"XY"的深度为max(x,y)
 * 3)如果"X"的深度是x,那么字符串"(X)"的深度是x+1
 * 例如:"()()()"的深度是1,"((()))"的深度是3。
 * 现在给你一个合法的括号序列,需要你计算出其深度。
 *
 * 设置count，遇到 字符 '(' ++，字符 ')' ++,求count 达到的最大值就是 括号的深度
 *
 */
public class ParenthesesDepth {

    public static void main(String[] args) {
        String a = "()()()";
        System.out.println(depth(a));
        String b = "((()))";
        System.out.println(depth(b));
    }

    public static int depth(String str) {
        if (str == null || str == "") return 0;

        int max = Integer.MIN_VALUE;
        int time = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '(') {
                time++;
                max = Math.max(max, time);
            } else if (str.charAt(i) == ')') {
                time--;
            }
        }
        return max;
    }

}
